package com.entity;

import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.lang.reflect.InvocationTargetException;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;


/**
 * 工艺品分类
 * 数据库通用操作实体类（普通增删改查）
 * 该类代表了工艺品分类的数据结构，通过注解 `@TableName` 指定了数据库表名。
 * 该类实现了Serializable接口，并且提供了构造函数以支持数据的复制。
 *
 * @author team10
 *
 */
@TableName("gongyipinfenlei")
public class GongyipinfenleiEntity<T> implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 默认构造函数
	 */
	public GongyipinfenleiEntity() {

	}

	/**
	 * 使用另一个对象的属性来初始化当前对象
	 * @param t 传入的对象
	 */
	public GongyipinfenleiEntity(T t) {
		try {
			// 使用 BeanUtils.copyProperties 方法复制属性
			BeanUtils.copyProperties(this, t);
		} catch (IllegalAccessException | InvocationTargetException e) {
			// 异常处理
			e.printStackTrace();
		}
	}

	/**
	 * 主键id
	 * 通过注解 @TableId 标注该字段为主键，并且使用自动增长策略
	 */
	@TableId
	private Long id;

	/**
	 * 类型
	 * 表示工艺品的分类类型
	 */
	private String leixing;

	/**
	 * 添加时间
	 * 使用 @JsonFormat 和 @DateTimeFormat 来格式化日期
	 */
	@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat
	private Date addtime;

	// Getter 和 Setter 方法

	public Date getAddtime() {
		return addtime;
	}

	public void setAddtime(Date addtime) {
		this.addtime = addtime;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * 设置：类型
	 * @param leixing 类型
	 */
	public void setLeixing(String leixing) {
		this.leixing = leixing;
	}

	/**
	 * 获取：类型
	 * @return 类型
	 */
	public String getLeixing() {
		return leixing;
	}
}
